// -*- C++ -*-

//========================================================================
/**
 * Author   : cuisw <shaovie@gmail.com>
 * Date     : 2009-08-19 11:38
 */
//========================================================================

#ifndef NDK_FILE_IO_H_
#define NDK_FILE_IO_H_

#include "ndk/ndk_os.h"

namespace ndk
{
  /**
   * @class file_io
   * 
   * @brief
   */
  class file_io
  {
  public:
    file_io();

    file_io(const char *filename);

    virtual ~file_io();

    virtual int open(int flags);

    virtual int open(const char *filename, int flags);

    inline int read(char *bf, size_t len);

    inline int write(const char *bf, size_t len)

    long long tell(void);

    long long seek(long long offset, int whence = SEEK_CUR);

    // set filesize to length byte. 
    int truncate(long long length);

    int remove();

    int close();

    long long size();
  protected:
    void init(const char *filename);

  protected:
    ndk_handle file_handle_;
    char *file_name_;
  };
} // namespace ndk

#endif // NDK_FILE_IO_H_

